/*
 * $Id$
 *
 * Copyright 2008 HuangHuang. All rights reserved.
 */
package com.crm.service;

import com.crm.model.SysLog;
import com.crm.model.User;

import java.util.List;
import java.util.Date;

/**
 * @author <a href="mailto:huang0510@hotmail.com">HuangHuang</a>
 * @version $Id$
 */
public interface ISloggerService {

    /**
     * 保存或更新一条日志信息。
     *
     * @param slog 日志实体。
     */
    void create(SysLog slog);

    /**
     * 创建用于操作记录分析的日志记录。
     *
     * @param user      用户信息实体。
     * @param modelName 被操作的实体域模型简称
     * @param action    操作类型 （CRUD）
     * @param msg       日志详细信息
     */
    void create(User user, String modelName, String action, String msg);

    /**
     * 读取所有日志信息集合。
     *
     * @return 所有日志信息集合。
     */
    List read();

    /**
     * 读取指定操作的所有日志。
     *
     * @param action 指定的CRUD操作。
     * @return 返回与指定的CRUD操作匹配的所有日志记录。
     */
    List readByAction(String action);

    /**
     * 获取指定日期的所有日志。
     *
     * @param date 日期对象。
     * @return 返回指定日期的所有日志记录。
     */
    List readByDate(java.util.Date date);

    /**
     * 删除一条日志。
     *
     * @param log 日志实体。
     */
    void delete(SysLog log);

    /**
     * 获取某个时间范围相关业务的操作记录。
     *
     * @param target 操作目标。 {@link SysLog#T_CUST}, {@link SysLog#T_CONT}, {@link SysLog#T_PROC}
     * @param fromDate 要查看操作记录的开始日期。{@link java.util.Date}
     * @param toDate   要查看操作记录的结束日期。{@link java.util.Date}
     * @return 返回相关业务操作记录数的列表。
     */
    List getOperateRecord(String target, Date fromDate, Date toDate);

}
